<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>原型的问题</title>
</head>
<body>
<script>
    /*
    * 原型的问题
    * 原型上的属性一般都是只读的,就算通过子类的实例对象进行修改也只是在当前对象身上进行定义从而遮盖了原型上的属性
    * 但是如果涉及读取——修改操作 比如数组 person1.nums.push(0) 先读取nums再修改所以会修改到原型上的数据
    *
    *
    * 所以对于引用数据类型我们一般要定义在每个对象的身上，也就是定义在构造函数内
    *
    * */

    function Person() {

    }

    Person.prototype.num = 100
    Person.prototype.nums = [1,2,3]

    let person1 = new Person()
    let person2 = new Person()

    /*这样修改只会影响自身  修改*/
    person1.num = 200
    /*但是这样修改会影响全局  读取 --> 修改*/
    person1.nums.push(0)
    console.log(person1.num)
    console.log(person2.num)
    console.log('--')
    console.log(person1.nums)
    console.log(person2.nums)


</script>
</body>
</html>